#include <iostream>
using namespace std;
// C++面向对象的三大特性为：封装、继承、多态
// C++认为万事万物都皆为对象，对象上又其属性和行为。
// 具有相同性质的对象，我们可以抽象为类
// 1.封装
// 是C++面向对象三大特性之一
// 意义：
// 将属性和行为作为一个整体，表现生活中的事物
// 将属性和行为加以权限控制
// 封装意义1：
// 在设计类的时候，属性和行为写在一起，表现事物
// 语法：class 类名{访问权限： 属性/行为}

// 封装意义2：
// 类在设计时，可以把属性和行为放在不同的权限下，加以控制
// 访问权限有三种：
// 1.public 公共权限        成员         类内可以访问  类外可以访问
// 2.protected 保护权限     成员         类内可以访问  类外不可以访问   儿子也可以访问父亲中的保护内容
// 3.private 私有权限       成员         类内可以访问  类外不可以访问   儿子不可以访问父亲的私有内容

//  eg1.设计一个圆类，求圆的周长
//  圆周率
const double PI = 3.13;

class Circle
{
    // 访问权限
    // 公共权限
public:
    //  属性
    int m_r;
    //  行为
    // 获取园周长
    double calculateZC()
    {
        return 2 * PI * m_r;
    }
};

// eg2
class Person
{
    // 公共权限
public:
    string m_Name;
    // 保护权限
protected:
    string m_Car;
    // 私有权限
private:
    int m_Password;

public:
    void func()
    {
        m_Name = "zhangsan";
        m_Car = "tuolaji";
        m_Password = 123214;
    } // 类内可以访问
};
int main()
{
    // 通过圆类 创建具体的圆（对象）
    Circle c1;
    c1.m_r = 10;
    cout << "圆的周长为：" << c1.calculateZC() << endl;

    Person p1;
    p1.m_Name = "lisi";
    // p1.m_Car = "benchi"; // 保护权限内容，在类外访问不到
    // p1.m_Password = 123; // 私有权限内容，在类外访问不到
    system("pause");
    return 0;
}
